package com.neusoft.ch11.io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class BufferedRederAndWriter {

	public static void main(String[] args) {
		test02();

	}

	private static void test02() {
		try {
			// 创建一个文件字节输入流对象
			// InputStreamReader可以将字节流转换为字符流【包装模式】
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in, "utf-8"));
			System.out.println("请输入内容：");			
			String str = br.readLine();
			System.out.println("控制台输入内容：" + str);
		} catch (Exception e) {
			System.out.println("控制台输入异常：" + e.getMessage());
		}
	}

	private static void test01() {

		try {
			// 创建一个文件字节输入流对象
			// InputStreamReader可以将字节流转换为字符流【包装模式】
			BufferedReader fis = new BufferedReader(
					new InputStreamReader(new FileInputStream("D:/temp/jvm/Hello.java"), "utf-8"));
			// 创建一个文件字节输入流对象
			// 构造方法的第二个参数，表示是从文件开头写如，还是从文件末尾写入：
			// true--接着末尾写；false--表示从开头写覆盖(会覆盖之前的全部内容)
			// 课下作业：替换为printwriter
			BufferedWriter fos = new BufferedWriter(
					new OutputStreamWriter(new FileOutputStream("D:/temp/jvm2/Hello_out4.java"), "utf-8"));
			// 创建一个获取输入流的临时变量（容器）
			String str;
			// read返回值，是本次byte数据接收到的数据长度
			do {
				// 读取输入流到字节数组中
				str = fis.readLine();
				if (str != null) {
					// 输出
					System.out.print(str + "\n");
					// 使用输出流将输入流的内容输出到制定文件中
					// 输出的内容不带换行符
					fos.write(str);
					fos.newLine();
				}
			} while (str != null);
			System.out.println("文件读取和写出完毕。");
			// 清空缓存区
			fos.flush();

			// 关闭资源
			fis.close();
			fos.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}
